// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
// 公共组件方法，禁止单独修改， 需要评估同意后进行
/**
 * 饼图循环动画
 * @param num
 * @returns {string}
 */
export function pieChartAnimate(
  $ec,
  $this,
  { dataLen = 2, timer = 'timer', interval = 5000 } = {}
) {
  var app = {
    currentIndex: -1
  }

  function intervalFun() {
    // 取消之前高亮的图形
    $ec.dispatchAction({
      type: 'downplay',
      seriesIndex: 0,
      dataIndex: app.currentIndex
    })
    app.currentIndex = (app.currentIndex + 1) % dataLen
    // 高亮当前图形
    $ec.dispatchAction({
      type: 'highlight',
      seriesIndex: 0,
      dataIndex: app.currentIndex
    })
    // 显示 tooltip
    setTimeout(() => {
      $ec.dispatchAction({
        type: 'showTip',
        seriesIndex: 0,
        dataIndex: app.currentIndex
      })
    }, 100)
  }

  clearInterval($this[timer])
  intervalFun()
  $this[timer] = setInterval(intervalFun, interval)
  $ec.on('mouseover', (e) => {
    clearInterval($this[timer])
    if (e.dataIndex === app.currentIndex) return
    $ec.dispatchAction({
      type: 'downplay',
      seriesIndex: 0,
      dataIndex: app.currentIndex
    })
  })
  $ec.on('mouseout', (e) => {
    app.currentIndex = e.dataIndex
    clearInterval($this[timer])
    $this[timer] = setInterval(intervalFun, interval)
  })
}
